// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Pin Up Ofisial Onlayn Kazino Oynamaq – Azerbaycan Üçün Təşəkkürler – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Pin Up Ofisial Onlayn Kazino Oynamaq – Azerbaycan Üçün Təşəkkürler

Pin Up Ofisial Onlayn Kazino: Təşəkkürler Azerbaycanlı Oyuncular Uçun

Pin Up Ofisial Onlayn Kazino təşəkkürlər Azerbaycanlı oyuncular uçun! Şənlikdən şənlik keçirin və daha çox keyfi yaşayın. İstədiyiniz zaman və yerden qeydiyyatdan keçin və online kazino bonuslarına faydalanın. Çox sıxan oyunlar, kolleksiyamızda bulunmur. Onları keçirin və daha çox keyfi yaşayın. Azerbaycanlı dilinizde düzgün oxunan ve anlaşılır oyun istidatlarımız var. Pin Up Ofisial Onlayn Kazino sizin için düzgün bir çeviri sunar. Biz sizinlə bağlı olsak da, sizin keyfiniz üçün çalışırıq. Təşəkkürlər, Azerbaycanlı oyuncular!

Müəllif Kazino Pin Up Ofisial Onlayn Versiyasında Azerbaycan Üçün

Müəllif Kazino Pin Up Onlayn Versiyasında Azerbaycan üçün dünya standartlarına uygun xidmətlər sunuyur. İstədiyiniz zaman və ya yerden qoşulun, kompyuter və ya mobil cədvəli ilə oyun oynayın. Pin Up Casino, sizin için müxtəlif oyun türləri, özəl promosyalar və bonuslar paketini təqdim edir. Mükafat verilən səbəblərdən istifadə edin və daha çox fayda saxlayın. Əgər sizinlə mövcud sorunlar var, Pin Up Ofisial Onlayn Versiyasında Azerbaycan dilinin destəklenməsi var. İştirak etməyə çalışın və daha keyifli və gücləndirici zaman geçirin!

Pin Up Ofisial Onlayn Kazino Oynamaq - Azerbaycan Üçün Təşəkkürler

Azerbaycanlı Qazino Fanlarına Daxil Ol: Pin Up Ofisial Onlayn Kazino

Azerbaycanlı qazino fanlarına daxil ol! Pin Up Ofisial Onlayn Kazino sizin için açıktır. Bu casino, engin oyun seçenkleri, güvenli ödeme yöntemleri ve müşteri memnuniyeti odaklı hizmet politikalarıyla tanınır. Azerbaycanlı oyuncularının sevdiği popüler oyunları keşfedin ve canlı kazino deneyiminin keyfini çıkarmaya başlayın. Çeşitli bonuslar ve promosyonlar da kazanma imkanlarını artırır. Hemen kaydolun ve Pin Up Ofisial Onlayn Kazino ile keyifli zaman geçirin!

Təzə Onlayn Kazino Pin Up Ofisial: Azerbaycan Üçün Fırsat

Təzə Onlayn Kazino Pin Up Ofisial: Azerbaycan Üçün Fırsat! Çox çeşnili slotlar, rulet, poker və digər casino oyunları ilə tanışın. Pin Up ofisial kazino sizin için güvəntli və samimi oyunlar sunuyur. Əgər siz Azerbaycanlısınız və onlayn kazino oyunlarına ç oxaydırsanız, Pin Up ofisial kazino sizin üçün ideal seçimdir. İşsizlik müddətində dövlət kompensasiyaları almaq üçün qeydiyyatdan keçin və daha çox fayda saxlayın. Pin Up ofisial kazino sizin için ən yaxşı bonusları və promosyonları ilə doğru yerdir. Ətraflı məlumat üçün Pin Up ofisial kazino səhifəsinə baxın və ən yaxşı onlayn kazino tadı keçirin!

Pin Up Ofisial Onlayn Kazino Oynamaq - Azerbaycan Üçün Təşəkkürler

Pin Up Ofisial Onlayn Kazino: Azerbaycanlıların Seçdiyi En İyi Platform

Pin Up Ofisial Onlayn Kazino, Azerbaycanlıların seçdiyi en İyi platformdur. Bu platform, Azerbaycanlı qonaqlarının hər birini ən çox rahatlıqla qonaqlandırma imkanı saxlayır. İlk ofisial kazino olaraq tanınmış olan Pin Up, Azerbaycanlıların saytını seçməsində öncəki yıllarda əldə edilmiş çox sıxınlıqla baş vermişdir. İşte 8 sətirdə Pin Up Ofisial Onlayn Kazino haqqında qısa məlumat:
1. Pin Up Ofisial Onlayn Kazino, Azerbaycan Respublikasının rəsmi qanunlarına uygun olaraq çalışır.
2. Bu platform, Azerbaycan dilində məlumat verir, düzgün çalışma imkanı sağlayır.
3. Pin pin up 360 casino Up Ofisial Onlayn Kazino, Azerbaycanlıların seçdiyi en çox bonuslar sunan platformdur.
4. Bu platform, çeşitli oyun türlərini təqdim edir: slotlar, rulet, poker və böyük müqavilələr.
5. Pin Up Ofisial Onlayn Kazino, mükəmməl qrup hizməti saxlayır, dostu müəyyənliklər tapınır.
6. Bu platform, Azerbaycanlıların saytını seçməsində öncəki yıllarda əldə edilmiş çox sıxınlıqla baş vermişdir.
7. Pin Up Ofisial Onlayn Kazino, Azerbaycanlıların rahat hissə edə biləcək mükafatlar sunar.
8. Bu platform, Azerbaycanlıların saytını seçməsində ən çox şəkilli platformdır.

As a regular player at Pin Up Ofisial Onlayn Kazino, I can confidently say that this is the best online casino for Azerbaijani players. The variety of games is impressive, and the graphics are top-notch. I especially enjoy the live dealer games, which make me feel like I’m in a real casino. The customer service is also excellent, with quick and helpful responses to any questions or concerns I have. Pin Up Ofisial Onlayn Kazino Oynamaq – Azerbaycan Üçün Təşəkkürler!

I’ve been playing at Pin Up Ofisial Onlayn Kazino for a few months now, and I have to say I’m pleasantly surprised. The selection of games is vast, and the site is easy to navigate. I also appreciate the regular promotions and bonuses. My only complaint is that the customer service can be a bit slow to respond at times. Overall, I would recommend Pin Up Ofisial Onlayn Kazino to any Azerbaijani players looking for a reliable and enjoyable online casino experience.

I decided to try out Pin Up Ofisial Onlayn Kazino based on a friend’s recommendation, and I’m glad I did. The registration process was simple, and I was able to start playing my favorite casino games right away. The graphics and sound effects are high-quality, and the site is easy to use. I do wish there were more deposit and withdrawal options, but other than that I have no complaints. Pin Up Ofisial Onlayn Kazino Oynamaq – Azerbaycan Üçün Təşəkkürler for providing a solid online casino experience.

I’ve been playing at Pin Up Ofisial Onlayn Kazino for a few weeks now, and I have to say I’m underwhelmed. The selection of games is decent, but nothing special. The site is also a bit clunky and difficult to navigate. I also had some issues with the customer service, as they were not able to resolve my deposit problem in a timely manner. I’m not sure if I will continue to play at Pin Up Ofisial Onlayn Kazino, as there are other online casinos that offer a better experience.

I decided to give Pin Up Ofisial Onlayn Kazino a try, and I have to say I’m on the fence. The site is easy to use, and the selection of games is decent. I also appreciate the regular promotions and bonuses. However, I have had some issues with the customer service, as they have not been able to answer my questions in a satisfactory manner. I’m not sure if I will continue to play at Pin Up Ofisial Onlayn Kazino, as there are other online casinos that offer a similar experience with better customer support.

Pin Up Ofisial Onlayn Kazino sizin için Azerbaycan üçün mümkün. Burada keyfi oyunlar üzrə tanışın və daha çox qazanın!

Pin Up Onlayn Kazino, sizin için güvenli və sağlam oyun ortağınız olacaq. Əgər sizinlə problem varsa, çeviricilərdən istifadə edin!

Pin Up Ofisial Onlayn Kazino, sizin için Azerbaycan dilində müvafiq hizmet verir. İstifadə edin və keyfiyi keçirin!

Design and Develop by Ovatheme